package QianFeng10.UDPDemo;

import java.io.IOException;
import java.net.*;

/**
 * UDP协议概述
 * UDP是User Datagram Protocol的简称，是一种无连接的协议，每个数据报都是一个独立的信息，包括完整的源地址
 * 或目的地址，它在网络上以任何可能的路径传往目的地，因此能否到达目的地，到达目的地的时间以及内容
 * 的正确性都是不能被保证的，每个被传输的数据报必须限定在64KB之内。
 * 主要使用以下的两个类:
 * DatagramPacket:此类表示数据报包。
 * DatagramSocket:此类表示用来发送和接收数据报包的套接字
 *
 * UDP服务器与客户端程序
 * 服务器端:
 * String info= "..."
 * //将信息封装成数据报
 * byte[] bytes = info.getBytes();
 * DatagramPacket dp = new DatagramPacket(bytes, 0, bytes.length),
 *      InetAddress.getByName("localhost"), 5000);//客户端在5000端口监听
 * DatagramSocket server = new DatagramSocket(3000);//服务器的端口
 * server.send(dp);//发送数据报
 * server.close();
 * 客户端:
 * byte[] b = new byte[1024];//接收内容
 * DatagramPacket dp = new DatagramPacket(b, b.length);//接收内容
 * //客户端在5000端口等待
 * DatagramSocket client = new DatagramSocket(5000);
 * Client.receive(dp); //接收内容
 * System.out.printIn(new String(dp.getData(), 0, dp.getLength()));
 * client.close();
 **/
public class UDPServer {

    public static void main(String[] args) {
        String info = "good good study day day up";

        byte[] bytes = info.getBytes();
        try {
            //将信息封装成数据报包
            DatagramPacket dp = new DatagramPacket(
                    bytes, 0, bytes.length, InetAddress.getByName("localhost"), 8000
            );//参数（buf:数据包数据, offset:分组数据偏移量, length:分组数据长度, address:目的地址, port:端口号）
            DatagramSocket socket = new DatagramSocket(9000);
            socket.send(dp);
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
